package code

import (
	"bufio"
	"fmt"
	"io"
	"log"
	"os"
)

func wr() {
	file, err := os.OpenFile("./test.txt", os.O_CREATE|os.O_WRONLY, 0666)
	if err != nil {
		log.Fatal(err)
	}
	defer file.Close()

	// 获取writer对象
	writer := bufio.NewWriter(file)
	for i := 0; i < 10; i++ {
		writer.WriteString(fmt.Sprintf("hello world %d\n", i))
	}
	// 刷新缓冲区, 强制写入
	writer.Flush()
}

func re() {
	file, err := os.Open("./test.txt")
	if err != nil {
		log.Fatal(err)
	}
	defer file.Close()

	// 获取reader对象
	reader := bufio.NewReader(file)
	for {
		line, _, err := reader.ReadLine()
		if err != nil {
			if err == io.EOF {
				break
			}
			log.Fatal(err)
		}
		fmt.Println(string(line))
	}
}

func Bufio01() {
	wr()
	re()
}
